/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ControladoresUI;

import ManagersUI.SeleccionCursoSeccionManager;
import javafx.fxml.FXML;
import AdmonHorarios.AdminCursos;
import AdmonHorarios.Aula;
import AdmonHorarios.Calendario;
import AdmonHorarios.Catedratico;
import AdmonHorarios.Curso;
import AdmonHorarios.Hora;
import AdmonHorarios.Seccion;
import java.util.ArrayList;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.ListView;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;

/**
 * FXML Controller class
 *
 * @author Chejo
 */
public class SeleccionCursoSeccionController {

    SeleccionCursoSeccionManager seleccionCursoSeccionManager;
    String carrera,ciclo,jornada,anio,semestre;
    @FXML ListView lstCurso;
    @FXML ListView lstSeccion;
    private ObservableList<Curso> cursos;
    private ArrayList<Seccion> listaSecciones;
    private AdminCursos datosC = new AdminCursos();
    Calendario calendario;
    public ArrayList <Curso> Cursos = new ArrayList <Curso> ();
    public ArrayList <Catedratico> Catedraticos = new ArrayList <Catedratico> ();
    public ArrayList <Aula> Aulas = new ArrayList <Aula> ();
    public ArrayList <Hora> horas = new ArrayList <Hora> ();
    public int CreditosP, CreditosT;

    public void initManager(final SeleccionCursoSeccionManager seleccionCursoSeccionManager, String carrera, String ciclo, String jornada, String anio, String semestre,
            ArrayList <Curso> Cursos,ArrayList <Catedratico> Catedraticos,ArrayList <Aula> Aulas,ArrayList <Hora> horas,Calendario calendario) {
        this.carrera=carrera;
        this.ciclo=ciclo;
        this.jornada=jornada;
        this.anio=anio;
        this.semestre=semestre;
        this.seleccionCursoSeccionManager = seleccionCursoSeccionManager;
        this.calendario=calendario;
        this.Aulas=Aulas;
        this.Catedraticos=Catedraticos;
        this.Cursos=Cursos;
        this.horas=horas;
        AdminCursos datos = new AdminCursos();
        cursos=datos.obtenerCursosSecciones(carrera, ciclo, jornada, anio, semestre);
        ObservableList<Curso> listaDatos=datos.obtenerCursosSecciones(carrera, ciclo, jornada, anio, semestre);
        ObservableList<String> listaCursos = FXCollections.observableArrayList();
        for(int i=0; i<listaDatos.size(); i++)
            listaCursos.add(listaDatos.get(i).getNombre());
        lstCurso.setItems(listaCursos);
    } 

    @FXML
    public void cargarSecciones(){
        if(lstCurso.getSelectionModel().getSelectedIndex()>=0){
            ObservableList<String> listaSeccion =FXCollections.observableArrayList();
            ArrayList<Seccion> secciones = cursos.get(lstCurso.getSelectionModel().getSelectedIndex()).getSecciones();
            listaSecciones=secciones;
            for(int i=0; i<secciones.size(); i++)
                listaSeccion.add(secciones.get(i).getNumero());
            lstSeccion.setItems(listaSeccion);
        }
    }

    @FXML
    public void abrirAsignacionCurosAula(){
        if(lstCurso.getSelectionModel().getSelectedIndex()>=0
                &&lstSeccion.getSelectionModel().getSelectedIndex()>=0){
            //cursoP = curso Posible
            Curso cursoP = Cursos.get(lstCurso.getSelectionModel().getSelectedIndex()); //Obtenemos el curso que esta seleccionado
            //Obtenemos la seccion seleccionada del curso y verificamos si ya fue asignada
            if ((datosC.existeAsignacion(cursoP.getSeccion(lstSeccion.getSelectionModel().getSelectedIndex()).getIdS())==false)
            &&(cursoP.getSeccion(lstSeccion.getSelectionModel().getSelectedIndex()).isAsignado()==false)){
                //Variables globales que guardan los creditos teoricos y practicos
                CreditosP=0;
                CreditosT=0;
                datosC.filtrarCatedraticosPorCurso(Catedraticos, Cursos, lstCurso.getSelectionModel().getSelectedIndex());
                //Algoritmo
                Curso curso = Cursos.get(lstCurso.getSelectionModel().getSelectedIndex()); //Guardas el curso seleccionado
                //Obtenemos los creditos
                CreditosT = curso.getCreditosTeoricos();
                CreditosP = curso.getCreditosPracticos();
                //Siguiente Panel
                seleccionCursoSeccionManager.showPnlAsignacionCursoAula(cursos.get(lstCurso.getSelectionModel().getSelectedIndex()), 
                    listaSecciones.get(lstSeccion.getSelectionModel().getSelectedIndex()),anio,semestre,
                    Cursos,Catedraticos,Aulas,horas,calendario,CreditosP,CreditosT);
            }else{
                JOptionPane.showMessageDialog(null, "La sección ya tiene asignación");
            }
        }
    }
    
    
    /**
     * Initializes the controller class.
     */
        public void initialize() {} 
    
    
}
